// 构造函数（类）的继承
// 方式1：构造函数
// function Base() {}
// function Derived() {}
// Object.setPrototypeOf(Derived.prototype, Base.prototype);
// const obj = new Derived();

// 方式2(错误方式)：Object.create
// 这会重新为 prototype 属性赋值并删除 constructor 属性，所以更容易出错
// function Base() {}
// function Derived() {}
// Derived.prototype = Object.create(Base.prototype);


//方式3：extends
class Base {}
class Derived extends Base {}
const obj = new Derived();

// Object.create 创建以null为原型的对象
const d = Object.create(null);
// d ---> null（d 是一个直接以 null 为原型的对象）
console.log(d.hasOwnProperty);
// undefined，因为 d 没有继承 Object.prototype
